ASP.Net Core এ RESTful API তৈরি করা একটি সাধারণ প্রক্রিয়া, যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান নিশ্চিত করে। REST (Representational State Transfer) হল একটি আর্কিটেকচারাল স্টাইল, যা HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে রিসোর্সের উপর অপারেশন সম্পাদন করতে দেয়।
RESTful API একটি ওয়েব সার্ভিস যা HTTP মেথডের মাধ্যমে বিভিন্ন রিসোর্সের উপর কাজ করে। RESTful API সাধারণত:
একটি RESTful API ডিজাইন করার জন্য নিম্নলিখিত সুবিধাসমূহ নিশ্চিত করতে হয়:
ASP.Net Core ব্যবহার করে একটি সিম্পল RESTful API তৈরি করা খুবই সহজ। নিচে একটি উদাহরণ দেখানো হলো যেখানে একটি Product
রিসোর্স তৈরি করা হবে এবং CRUD অপারেশন সম্পাদন করা হবে।
.NET CLI:
dotnet new webapi -n ProductApi
Microsoft.EntityFrameworkCore
প্যাকেজ ইনস্টল করতে পারেন ডাটাবেসের সাথে ইন্টিগ্রেশন করার জন্য।Swashbuckle.AspNetCore
প্যাকেজ ইনস্টল করলে আপনি Swagger UI ব্যবহার করে API ডকুমেন্টেশন তৈরি করতে পারবেন।প্রথমে একটি Product
মডেল তৈরি করতে হবে, যা API এ ব্যবহৃত হবে।
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
DbContext ক্লাস তৈরি করে ডাটাবেসে রিসোর্স (এখানে Product
) ব্যবস্থাপনা করা হয়।
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
public DbSet<Product> Products { get; set; }
}
এখন একটি API কন্ট্রোলার তৈরি করতে হবে, যা HTTP রিকোয়েস্টের জন্য ব্যবহৃত হবে। কন্ট্রোলারটি ControllerBase ক্লাসের মাধ্যমে API রুটিন পরিচালনা করবে।
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
private readonly AppDbContext _context;
public ProductsController(AppDbContext context)
{
_context = context;
}
// GET: api/products
[HttpGet]
public async Task<ActionResult<IEnumerable<Product>>> GetProducts()
{
return await _context.Products.ToListAsync();
}
// GET: api/products/5
[HttpGet("{id}")]
public async Task<ActionResult<Product>> GetProduct(int id)
{
var product = await _context.Products.FindAsync(id);
if (product == null)
{
return NotFound();
}
return product;
}
// POST: api/products
[HttpPost]
public async Task<ActionResult<Product>> PostProduct(Product product)
{
_context.Products.Add(product);
await _context.SaveChangesAsync();
return CreatedAtAction("GetProduct", new { id = product.Id }, product);
}
// PUT: api/products/5
[HttpPut("{id}")]
public async Task<IActionResult> PutProduct(int id, Product product)
{
if (id != product.Id)
{
return BadRequest();
}
_context.Entry(product).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!_context.Products.Any(e => e.Id == id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// DELETE: api/products/5
[HttpDelete("{id}")]
public async Task<ActionResult<Product>> DeleteProduct(int id)
{
var product = await _context.Products.FindAsync(id);
if (product == null)
{
return NotFound();
}
_context.Products.Remove(product);
await _context.SaveChangesAsync();
return product;
}
}
Startup.cs
ফাইলের মধ্যে API কনফিগারেশন এবং ডাটাবেস কনটেক্সট পরিষেবা যোগ করুন।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseInMemoryDatabase("ProductDb")); // In-memory database
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
এই কন্ট্রোলার এখন GET, POST, PUT, এবং DELETE HTTP মেথডগুলোকে সাপোর্ট করবে:
/api/products
: সমস্ত প্রোডাক্টের তালিকা ফেরত দেয়।/api/products/{id}
: একটি নির্দিষ্ট প্রোডাক্ট ফিরিয়ে দেয়।/api/products
: একটি নতুন প্রোডাক্ট তৈরি করে।/api/products/{id}
: একটি প্রোডাক্ট আপডেট করে।/api/products/{id}
: একটি প্রোডাক্ট মুছে ফেলে।API এর জন্য ডকুমেন্টেশন এবং পরীক্ষা করার সুবিধা দিতে Swagger ব্যবহার করা হয়। Swashbuckle.AspNetCore প্যাকেজটি ইনস্টল করলে Swagger UI স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে।
Swashbuckle.AspNetCore
প্যাকেজ ইনস্টল করুন।public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ProductApi v1"));
}
}
এখন আপনি http://localhost:5000/swagger
URL দিয়ে Swagger UI তে API পরীক্ষা করতে পারবেন।
ASP.Net Core দিয়ে একটি RESTful API তৈরি করতে, আপনাকে প্রথমে একটি মডেল এবং ডাটাবেস কনটেক্সট তৈরি করতে হয়। এরপর, একটি কন্ট্রোলার তৈরি করে HTTP রিকোয়েস্টগুলোর জন্য রুট এবং মেথডগুলো কনফিগার করতে হয়। Swagger UI ব্যবহার করে API ডকুমেন্টেশন এবং পরীক্ষা করা সহজ।
Read more